package main

import "fmt"

//函数的递归调用
func main() {

	test1(4)
	fmt.Println("================")
	test2(4)
	fmt.Println("===========")

	for i := 0; i < 10; i++ {
		fmt.Println(fb(i))
	}
}

func test1(n int) {
	if n > 2 {
		n--
		test1(n)
	}
	fmt.Println(n)
}

// 4>2
//  --  3
// inner func
//待输出3 3

// 3>2
//	-- 2
// inner func
//待输出2 2

// 递归跳出的条件
// 2>2
// 条件不满足 输出1 2

func test2(n int) {
	if n > 2 {
		n--
		test2(n)
	} else {
		fmt.Println(n)
	}
}

//菲波那切数列
// 1 1 2 3 5 8 13
func fb(n int) int {
	if n == 0 {
		return 0
	}
	if n == 1 {
		return 1
	}
	return fb(n-1) + fb(n-2)

}
